package org.sapling.data.exp;

import org.sapling.data.api.ExpErrorCode;
import org.sapling.data.enums.ExceptionCodeEnum;

import lombok.Getter;

/**
 * 
 * @ClassName: SaplingExptionApi  
 * @Description: Sapling异常处理分发接口
 * @author DcfZero 
 * @date 2020年6月27日  
 *
 */
@Getter
public abstract class BaseSaplingException extends Exception{

	private static final long serialVersionUID = 8707719432699212333L;
	public final ExpErrorCode errorCode;

	/**
	 * 指定错误码处理异常
	 * @param errorCode
	 */
	public BaseSaplingException(final ExpErrorCode errorCode) {
		super(errorCode.getDescription());
		this.errorCode = errorCode;
	}
	
	/**
	 * 直接错误描述处理异常
	 * @param errorDetailMessage
	 */
	public BaseSaplingException(final String errorDetailMessage) {
		super(errorDetailMessage);
		this.errorCode = ExceptionCodeEnum.UNDEFIND;
	}

	/**
	 * 指定导火索处理异常
	 * @param t
	 */
	public BaseSaplingException(final Throwable t) {
		super(t);
		this.errorCode = ExceptionCodeEnum.UNDEFIND;
	}

	/**
	 * 指定错误码和错误描述处理异常
	 * @param errorCode
	 * @param errorDetailMessage
	 */
	public BaseSaplingException(final ExpErrorCode errorCode, final String errorDetailMessage) {
		super(errorDetailMessage);
		this.errorCode = errorCode;
	}

	/**
	 * 指定错误描述和导火索处理异常
	 * @param errorDetailMessage
	 * @param t
	 */
	public BaseSaplingException(final String errorDetailMessage, final Throwable t) {
		super(errorDetailMessage,t);
		this.errorCode = ExceptionCodeEnum.UNDEFIND;
	}

	/**
	 * 指定错误码，错误描述以及导火索处理异常
	 * @param errorCode
	 * @param errorDetailMessage
	 * @param t
	 */
	public BaseSaplingException(final ExpErrorCode errorCode, final String errorDetailMessage,final Throwable t) {
		super(errorDetailMessage,t);
		this.errorCode = errorCode;
	}
}
